#include "hc32f460_usart.h"
#include <rtthread.h>
#define USART_CH  M4_USART1

static void UsartRxErrProcess(void)
{
    if (Set == USART_GetStatus(USART_CH, UsartFrameErr))
    {
        USART_ClearStatus(USART_CH, UsartFrameErr);
    }

    if (Set == USART_GetStatus(USART_CH, UsartParityErr))
    {
        USART_ClearStatus(USART_CH, UsartParityErr);
    }

    if (Set == USART_GetStatus(USART_CH, UsartOverrunErr))
    {
        USART_ClearStatus(USART_CH, UsartOverrunErr);
    }
}

char rt_hw_console_getchar(void)
{
  int ch = -1;
  
  //    if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) != RESET)
  //    {
  //        ch = UartHandle.Instance->DR & 0xff;
  //    }
  
          if (Set == USART_GetStatus(USART_CH, UsartRxNoEmpty))         /* Warit Rx data register no empty */
        {
            ch = USART_RecData(USART_CH);
        }else
        {
        rt_thread_mdelay(10);
        }

        UsartRxErrProcess();
        
  return ch;
}
int  usart_send_msg(uint8_t * msg,uint16_t len);
void rt_hw_console_output(const char *str)
{
    rt_size_t i = 0, size = 0;
    char a = '\r';

 

    size = rt_strlen(str);
    for (i = 0; i < size; i++)
    {
        if (*(str + i) == '\n')
        {
            usart_send_msg((uint8_t *)&a,1);
        }
        usart_send_msg((uint8_t *)(str + i), 1);
    }
}


//      
//      

